﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EntitiesLayer;
using DAL;
using System.Data.SqlClient;
namespace BLL
{
    public class GestorCita
    {
        public bool crearCita(int ptipocita, DateTime pfechahora, int pidencargado, int pidcliente, string pnotas, char pestado)
        {
            try
            {

                Cita cita = new Cita( 
                    pfechahora, pidencargado, pidcliente, pnotas, ptipocita, pestado, 0);

                UnitOfWork.RepositoryCita.Insert(cita);
                UnitOfWork.RepositoryCita.Save();

            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
            catch (ApplicationException ex)
            {

                Console.WriteLine(ex.Message);
                return false;
            }

            return true;        
        
        }

        public IEnumerable<Cita> listarCitas()
        {
            try
            {
                return UnitOfWork.RepositoryCita.GetAll();
            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (ApplicationException ex)
            {
                Console.WriteLine(ex.Message);
            }
            return null;
        }

        public IList<Cita> consultarCitasUsuario(int idUsuario){

            return null;
        }

        public bool ModificarCita(int pidcita, int ptipocita, DateTime pfechahora, int pidencargado, int pidcliente, string pnotas, char pestado)
        {
            try
            {

                Cita cita = new Cita(pfechahora, pidencargado, pidcliente, pnotas, ptipocita, pestado, pidcita);

                UnitOfWork.RepositoryCita.Update(cita);
                UnitOfWork.RepositoryCita.Save();

            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
            catch (ApplicationException ex)
            {

                Console.WriteLine(ex.Message);
                return false;
            }

            return true;          
        
        }

        public bool EliminarCita(int idCita){
            try
            {

                Cita cita = UnitOfWork.RepositoryCita.GetById(idCita);

                UnitOfWork.RepositoryCita.Delete(cita);
                UnitOfWork.RepositoryCita.Save();

            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
            catch (ApplicationException ex)
            {

                Console.WriteLine(ex.Message);
                return false;
            }

            return true;          
        }

        public Cita BuscarCitaPorId(int pcita)
        {
            try
            {
                return UnitOfWork.RepositoryCita.GetById(pcita);
            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.Message);

            }
            catch (ApplicationException ex)
            {

                Console.WriteLine(ex.Message);

            }

            return null;
        }
    }
}
